微分方程
坦白講
也是都忘光了 Orz
基本上我的認知就是用微積分加線性代數去描述問題
然後解出來就是
C. H. Edwards, Jr. and D. E. Penney, "Elementary Differential Equations with Boundary Value Problems," 6-th edition, 2008, Prentice Hall.
機率
我覺得很重要一個基礎
當時的課程網頁
畢竟每個問題通常都是不確定的XD
會先從集合的概念該使 counting(複習 again)
帶到古典機率 這邊都還是高中的範圍
再帶到現代數學的機率公理之後
之後就開始變成天書啦
我是統計學再念了一遍
然後隨機過程又念了一遍
碩論有用到機率 所以又讀了一遍
不過還是覺得很難掌握
但念了那麼多遍也代表了真的很重要吧
資料結構
Fundamentals of Data Structures in C++, E. Horowitz, S. Sahni and D. Mehta, Computer Science Press.
重要 重要 重要 很重要所以要說三遍
基本上就是告訴你資料怎麼存最有效率
教你Big(O)分析之後
就開始介紹以下各種data structure啦
從線性的array到 hashing 到 tree 到 graph
這大概是唯一會了解輪子怎麼造的時候吧
那時候作業也都很有趣
認真的去思考怎麼造樹
去利用hashing解決問題
想各種加速方法
其實是真的很有趣的阿
但你出社會之後
會反覆一念在念這科的
不是因為他很重要 你工作會一直用到(還是用得上的 我沒說用不到)
而是人生.................
演算法概論
在資料該怎麼擺放之後
接下來 回到更基本的問題
怎麼用程式解決問題
演算法基本上就是一連串具體解決問題的步驟
然後要有
以上都是教科書定義
總之 就是回到CS根本 如何用電腦解決問題(計算問題)
課本就是這本經典的楓葉本
Introduction to Algorithms, 2nd Ed, the MIT Press, by Cormen, Leiserson, Rivest and Stein.
基本上就是三部曲
大概就這樣
不過其實商管科系的 作業研究 這門課其實也涵蓋了很多這類的方法
這門課的重點是上面三大項了
一樣一開始還是在教一次Big(O)
然後帶到那三項
再來又會帶到些Tree and Graph的演算法
最後簡單提一下P NP
但不會太深
因為後面還有計算理論會提
大概如此
總之我想這也是一門你出社會後會一讀再讀的好課......
然後我想說 即使你上完了這門課
但還是不會寫leetcode
應該很正常吧
資料庫系統概論
Fundamentals of Database Systems by Elmasri and Navathe, 5th edition, 2006, Addison Wesley
聽起來是教你怎麼用MySQL嗎? 錯
教你怎麼實作MySQL嗎? 錯
其實是講很general的東西
從你要怎麼分析你的程式的ER-Model
到怎麼設計Table schema正規化
還有一些基本DB的概念就這樣
怎麼用特定的Database(像是MySQL還是PostgreSQL)
還是要自己學的 甚至連網頁怎麼寫也是
我記得這門課的專題就是寫個旅遊部落格
從PHP到架DB 架 Server 寫網頁都是自己學
典型的一門資工課
計算機網路概論
顧名思義就是介紹計算機網路 TCP/IP 5層架構
包含 Link layer, Network layer, Transport layer, 到Application layer (資工不太會探討Physical layer)
會介紹各層做什麼 有什麼protocol等等
課本是
J. F. Kurose and K. W. Ross, Computer Networking: A Top Down Approach Featuring the Internet, 4th Edition, Addison-Wesley.
這本我覺得寫得不錯就是
也是我後來會拿出來翻翻的課本 只會上到第五章就是了
後面三章都有專門的一門課
剛好我也都有修過
之後再介紹
其實我覺得TCP/IP的設計階層式架構
最能反應在工程上抽象化定義好每一層的功能,定好API
就是這樣乾淨的架構所帶來的威力 (但我也是修了很多們網路的課 才稍微體悟到這道理的...)
才能讓網路的概念變得那麼簡單
我只要考慮好我目前所在的這層與下面這層之間德關係就好
不會說我寫的HTTP還要考慮這個bit的資料要怎麼傳到下一個hop這樣
我一直覺得這是個很漂亮的設計
也或許如此我那時候才想走網路相關的研究吧
組合語言與系統程式
這其實是兩門課合在一起的 所以有兩本課本 算是都滿底層的東西 現在也都從必修拿掉了...
BTW 這門課是我第一個拿到的100分XD
程式語言
Concepts of Programming Languages, Eigth Edition, Robert W. Sebesta, Addison Wesley, 2008.
這本課不是要教特定的語言
比較像是一種語言學概論
看課綱就感覺得出來
每一個都是很特定的主題
Data Type, Expression等等
很理論 也不知道有沒有用
但國家考試有這科喔
所以你買得到參考書XD
比較特別的是最後教了functional programming & logical programming
練習寫了 common list & prolog
算是比較特別的體驗
不過純functional我到現在還是沒辦法參悟啊
計算機系統管理
System Administration 我們都簡稱SA
基本上就是教你如何管理操作設定UNIX系統
選擇的是FreeBSD(因為跟交大資工很有淵源)
是我們系上很有名的操課
也是我大學生涯中 唯一一次讓我為了趕期末專案而看日出的課
"UNIX System Administration Handbook," 3rd ed.
By Evi Nemeth, Garth Snyder, Scott Seebass, Trent R. Hein,
Prentice Hall Press, 2000.
坦白說
修這門課是個熱血
就是大家都說 “走啦 一起修 一起爆肝” 的這種熱血而修的
所以我其實真的很多都聽不懂
每次做作業都要重新google一次(雖然事後才知道 這樣才是正常的)
然後那時候我對UNIX系統的操作也止於 ls
cd
可想而知 很痛苦
但現在想想 是一個很好的磨練
裝系統架系統其實也是一個軟體工作很重要的訓練就是(這是我在工作之後的體悟就是)
也讓我開始熟悉UNIX系統
知道如何架設各種單機服務
shell script的練習
到現在對我都還是很重要(因為我大致都在Linux系統上開發)
這其中還包含文化的問題
比如說就應該要把電腦裝成FreeBSD啊 用什麼VM(我當時就是用VM)
為什麼一定要裝FreeBSD才是對的...
一些工程師間的鄙視垃圾話文化
其實也是你對在這行要面對課題就是
獲益良多呢...
接下來三門都是硬體課
我承認我不熟
電路電子學
這也是我們這屆第一次開的課
希望給我們資工組的人基本電子學與電路學的概念
所以像是資電組的人就要單獨修分開修
那教授希望給我們什麼概念呢
(1) Introduction to signals, systems and elctrical circuits,
(2) Introduction to basic analog electronic circuits and operational amplifiers,
(3) Introduction to basic digital electronic circuits and CMOS logic gates.
看這簡介
一是訊號與系統 二是電路學 三是電子學
其實包含EE的很多基礎課了
所以當然只能蜻蜓點水囉
附上當時講義XD
http://mapl.nctu.edu.tw/course/Electronics_07/files/Lecture%201&2%20Signals%20and%20Systems.pdf
不過那時從那些電子元件兜成了一個AND gate之後
好像有一種豁然開朗的感覺
(不過也沒啥用就是 攤手)
數位電路設計
M. Morris Mano & Charles R. Kime, Logic and Computer Design Fundamentals, 3rd Edition
好啦
前面把gate做出來之後
接下來就是用這些邏輯閘做出更複雜的數位電路
這門課會從布林代數開始教
然後教你用Karnaugh Map去簡化電路
之後抱歉 我真的全忘記了
對不起老師...........
數位電路實驗
我也很討厭的一門課
所以我不走硬體吧XD
只能說幸好也從必修拿掉了
基本上就是用Verilog去實作數位電路設計裡面學到的電路
that's it 夢靨一場 不想多提QQ
看看大二的課程多麽的扎實啊
這還不包含外文與通識呢